package elm.service;

import elm.dao.BusinessDao;
import elm.entity.po.Business;
import elm.util.BusinessTypeMapping;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import io.swagger.v3.oas.annotations.Operation;
/**
 * 商家业务服务类
 * 提供商家相关的业务逻辑处理，包括：
 * - 根据类型查询商家列表
 * - 关键词搜索商家信息
 */
@Service
public class BusinessService {
    @Resource
    private BusinessDao businessDao;
    /**
     * 根据商家类型ID获取商家列表
     * 类型ID为0时返回所有商家，其他情况通过BusinessTypeMapping转换类型后查询
     *
     * @param typeId 商家类型ID（0表示所有类型）
     * @return 包含匹配商家的可迭代对象
     * @throws IllegalArgumentException 当传入无效类型编号时抛出
     */
    @Operation(summary = "根据类型ID获取商家列表", description = "当typeId为0时返回所有商家，其他情况根据映射后的类型查询")
    public Iterable<Business> getBusinessListByTypeId(Long typeId) {
        System.out.println(typeId);
        if(typeId==0){
            return businessDao.findAll();
        }
        String type = BusinessTypeMapping.getTypeById(typeId);
        System.out.println(type);
        if (type == null) {
            throw new IllegalArgumentException("无效的类型编号: " + typeId);
        }
        System.out.println(businessDao.findByType(type));
        return businessDao.findByType(type);
    }
    /**
     * 按关键词搜索商家信息
     * 支持按名称或描述模糊匹配，空关键词时返回所有商家
     *
     * @param keyword 搜索关键词（可为空）
     * @return 包含匹配商家的可迭代对象
     */
    @Operation(summary = "按关键词搜索商家信息", description = "支持按名称或描述进行模糊匹配，空关键词时返回所有商家")
    public Iterable<Business> searchBusinessesByKeyword(String keyword) {
        if(keyword==null || keyword.trim().isEmpty()){
            return businessDao.findAll();
        }
        return businessDao.findByNameOrDescriptionContaining(keyword);
    }
}
